#!/usr/bin/env ruby

# Copyright (c) 2010-2012 Microsoft Corp.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#	http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Description: stores a file in a given bucket, and gives it public read access

require 'rubygems'
require 'ruby-aws'
require 'aws/s3'

cmd = Amazon::WebServices::Util::CommandLine.new
cmd.checkAuthConfig

if ARGV.length < 2
	$stderr.puts("Usage: #{$0} <local-file> <bucket> <mime-type>")
	$stderr.puts("Mime-type defaults to application/octet-stream")
	exit
end

local_file = ARGV[0]
bucket     = ARGV[1]
mime_type  = ARGV[2] || "application/octet-stream"

AWS::S3::Base.establish_connection!(	:access_key_id     => cmd.authId,
					:secret_access_key => cmd.authKey	)

base_name = File.basename(local_file)
puts "Uploading #{local_file} as '#{base_name}' to '#{bucket}'"
begin
	options = { :content_type => mime_type, :access => :public_read }
	AWS::S3::S3Object.store(base_name, File.open(local_file), bucket, options)
rescue => e
	puts("Error: " + e.message)
	exit
end
puts "Uploaded!"

